/*
2021-10-26
https://www.acwing.com/problem/content/4004/
*/
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>

using namespace std;
const int N=2e5+10;
vector<int> d[N];
int n,m;
bool st[N];
int ans[N];
struct node
{
    int id,w;
    int cnt;
    bool operator < (const node & W) const
    {
        return w<W.w;
    }
}a[N];


int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        a[i].id=i;
        cin>>a[i].w;
    }
    while(m--)
    {
        int x,y;
        cin>>x>>y;
        if(a[x].w < a[y].w) a[y].cnt++;
        if(a[y].w < a[x].w) a[x].cnt++;
    }
    sort(a+1,a+1+n);
    int cur=1,last=-1;
    for(int i=1;i<=n;i++)
    {
        int id=a[i].id;
        st[id]=true;
        if(a[i].w!=last)
        {
            last=a[i].w;
            cur=i;
        }
        ans[id]=max(0,cur-1-a[i].cnt);
    }
    
    for(int i=1;i<=n;i++)
        cout<<ans[i]<<' ';
    
    return 0;
}


